#pragma once
#include "TCharSupport.h"
#include "EpilCodeType.h"
#include "EpilLexLocation.h"


#define EPIL_CODE_DECL( Type )			public: virtual EpilCodeType GetType() const { return ECT_##Type; }


class EpilCodeBase
{
public:
	EpilCodeBase( const EpilLexLocation & location );
	virtual ~EpilCodeBase();

	const EpilLexLocation &				GetLocation() const								{ return m_location; }

	virtual EpilCodeType				GetType() const = 0;
	virtual tstring						ToEpilCode( int indent = 0 ) const = 0;

private:
	EpilLexLocation						m_location;
};